package com.jinglvhuanjing.app.helper;

import android.content.Context;
import android.util.DisplayMetrics;
import android.view.WindowManager;

import androidx.annotation.NonNull;


public class DisplayHelper {

    /**
     * 获取屏幕宽度
     *
     * @param context 上下文
     */
    public static int getScreenWidth(@NonNull Context context) {
        return getDisplayMetrics(context).widthPixels;
    }

    /**
     * 获取屏幕高度
     *
     * @param context 上下文
     */
    public static int getScreenHeight(@NonNull Context context) {
        return getDisplayMetrics(context).heightPixels;
    }

    /**
     * 单位转换: dp -> px
     *
     * @param context 上下文
     * @param dpValue 需要转换的值，单位dp
     */
    public static int dp2px(@NonNull Context context, int dpValue) {
        float density = DisplayHelper.getDensity(context);
        return (int) (density * dpValue + 0.5f);
    }

    /**
     * 单位转换: sp -> px
     *
     * @param context 上下文
     * @param sp      需要转换的值，单位sp
     */
    public static int sp2px(@NonNull Context context, int sp) {
        return (int) (getFontDensity(context) * sp + 0.5);
    }

    public static float getFontDensity(@NonNull Context context) {
        return context.getResources().getDisplayMetrics().scaledDensity;
    }

    /**
     * 获取 DisplayMetrics
     *
     * @param context 上下文
     */
    public static DisplayMetrics getDisplayMetrics(@NonNull Context context) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((WindowManager) context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE))
                .getDefaultDisplay().getMetrics(displayMetrics);
        return displayMetrics;
    }

    /**
     * 获取屏幕密度
     *
     * @param context 上下文
     * @return 屏幕密度
     */
    private static float getDensity(@NonNull Context context) {
        return context.getResources().getDisplayMetrics().density;
    }
}